why do software engineers get paid so much